﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using KCL.Code;
using KCL.Code.Business;

namespace KCL.Management
{
    public partial class OrderDebt : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session[SessionManager.InSection] != null)
            {
                if ((int)Session[SessionManager.InSection] == 1)
                {
                    txtPayDate.Attributes.Add("ReadOnly", "true");
                    if (!this.IsPostBack)
                    {
                        CalendarExtender1.SelectedDate = DateTime.Today;
                    }
                    else
                    {
                        CalendarExtender1.SelectedDate = DateTime.ParseExact(txtPayDate.Text, "dd/MM/yyyy", null);
                    }

                    btnAddOrderDebt.Enabled = dgvOrderDebt.Columns[9].Visible = (bool)Session[SessionManager.canCreate];
                    btnUpdateOrderDebt.Enabled = (bool)Session[SessionManager.canModify];
                    return;
                }
            }
            Response.Redirect("~/Default.aspx");
        }

        protected void btnAddOrderDebt_Click(object sender, EventArgs e)
        {
            Code.OrderDebt od = new Code.OrderDebt();
            try
            {
                od.orderCode = cboOrderCode.SelectedValue;
                od.payTurn = int.Parse(txtPayTurn.Text.Trim());
                od.payAmount = double.Parse(txtPayAmount.Text.Trim());
                od.payDate = DateTime.ParseExact(txtPayDate.Text, "dd/MM/yyyy", null);
            }
            catch (Exception)
            {
                lblMessage.ForeColor = System.Drawing.Color.Red;
                lblMessage.Text = "Tham số nhập vào không hợp lệ.";
                return;
            }

            if (OrderDebtServices.Insert(od))
            {
                dgvOrderDebt.DataBind();
                lblMessage.ForeColor = System.Drawing.Color.Green;
                lblMessage.Text = string.Format("Thêm công nợ của đơn hàng {0} thanh toán đợt {1} thành công.", od.orderCode, od.payTurn);
            }
            else
            {
                lblMessage.ForeColor = System.Drawing.Color.Red;
                lblMessage.Text = string.Format("Thêm công nợ của đơn hàng {0} thanh toán đợt {1} thất bại.", od.orderCode, od.payTurn);
            }
        }

        protected void dgvOrderDebt_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                cboOrderCode.SelectedValue = dgvOrderDebt.SelectedRow.Cells[3].Text;
                txtPayTurn.Text = dgvOrderDebt.SelectedRow.Cells[4].Text;
                txtPayAmount.Text = dgvOrderDebt.SelectedRow.Cells[6].Text;
                CalendarExtender1.SelectedDate = DateTime.ParseExact(dgvOrderDebt.SelectedRow.Cells[5].Text, "dd/MM/yyyy", null);
            }
            catch (Exception) { }
        }

        protected void btnUpdateOrderDebt_Click(object sender, EventArgs e)
        {
            if (dgvOrderDebt.SelectedDataKey == null)
            {
                lblMessage.ForeColor = System.Drawing.Color.Black;
                lblMessage.Text = "Bạn chưa chọn hàng cần cập nhật.";
                return;
            }

            Code.OrderDebt od = new Code.OrderDebt();
            try
            {
                od.orderCode = cboOrderCode.SelectedValue;
                od.payTurn = int.Parse(txtPayTurn.Text.Trim());
                od.payAmount = double.Parse(txtPayAmount.Text.Trim());
                od.payDate = DateTime.ParseExact(txtPayDate.Text, "dd/MM/yyyy", null);
            }
            catch (Exception)
            {
                lblMessage.ForeColor = System.Drawing.Color.Red;
                lblMessage.Text = "Tham số nhập vào không hợp lệ.";
                return;
            }

            if (OrderDebtServices.Update(od))
            {
                dgvOrderDebt.DataBind();
                lblMessage.ForeColor = System.Drawing.Color.Green;
                lblMessage.Text = string.Format("Cập nhật công nợ của đơn hàng {0} thanh toán đợt {1} thành công.", od.orderCode, od.payTurn);
            }
            else
            {
                lblMessage.ForeColor = System.Drawing.Color.Red;
                lblMessage.Text = string.Format("Cập nhật công nợ của đơn hàng {0} thanh toán đợt {1} thất bại.", od.orderCode, od.payTurn);
            }
        }
    }
}